//xuejianxin@20180101
var listData={
 list :[]  //数据 
,page :{pageSize:10,currentPage:1}
}
//列表
var defautList = {
	 template: '#listTemplate'
	,data :function() {//数据
		return listData;
	 }
	,mounted: function() {//加载完成后回调
	   var $draggable= $('.draggable').draggabilly();//使分页可拖动
	   this.listPage();//加载时查询列表
	}
	,methods: {//方法
			         getSelectList:function (){//获取选中列表
			        	 var list=this.list;
			        	 var selectList=[];
			        	 for(i = 0,len=list.length; i < len; i++) {
			        		 if(list[i].checked){//被选中
			        			 selectList.push(list[i]);
			        		 }
			        	 }
			        	 return selectList;
			         }
	                 ,selectAll:function (isChecked){//选中所有
	                	 //console.log(event.target.checked);
	                	 var list=this.list;
			        	 for(i = 0,len=list.length; i < len; i++) {
			        		 list[i].checked=isChecked;
			        	 }
	                 }
			         ,selectRow:function (obj,index){//选中行
			        	 var ckSelectAll=this.$refs.ckSelectAll;//获取全选checkbox
			        	 ckSelectAll.checked=false;//设置为非选中状态
			        	 var isExpand=$('#collapse_'+obj.id).hasClass("in");//判断是否展开
			        	 var isChecked=!isExpand;//取反
			        	 this.selectAll(false);//设置所有数据未选中
			        	 obj.checked=isChecked;//设置当前数据选中状态
		          	 }
			         ,queryAll:function (event){//点击查询按钮
			        	 this.page.currentPage=1;//重置页数为1
			        	 this.listPage(event);
			         }
			         ,dataCallback  :function(result) {/*在查询数据返回时调用用于处理个性化数据*/}
			         ,getListUrl:function (){/*覆盖此方法 返回自己的请求方法*/
			        	 return 'listPage'; 
			          }
			         ,getListParameters:function (){
			        	 /*按照以下方法， 添加自己的参数
			        	   getParameters:function (){
			        	      //调用父类方法获取默认的参数 
			        	      var ps= defautList.methods.getParameters.call(this);
			        	      //添加自己的参数
			        	      ps.aaaa='aaaa';
			        	      //删除某个不需要的参数
			        	      delete ps.bbb;
			        	      return ps;
			        	   }
			        	 */
			        	 var ps={};
				       	 ps.currentPage=this.page.currentPage;
				       	 ps.pageSize=this.page.pageSize;
				       	 var items=this.query.items;
			       	     for(k in items){
			       	    	  var isQuery=items[k].show||this.query.showAll;
			       	    	  var v=$.trim(items[k].value);
			       	    	  if(v && isQuery){//如果查询值不为空
			       	    		 ps[k]=v;
			       	    	  }
			       	     }
			       	     return ps;
			         }
			         ,listPage:function (event){//执行分页查询
			       	    var ps=this.getListParameters();
			       	    var url=this.getListUrl();
			       	    this.$http.post([basePath,url].join(""), ps, {headers: {}})
			        	    .then(function(response) {//正确响应
			        	        var result=response.data;
			        	        this.list=result.pager.list;
			        	        delete result.pager.list;
			        	        this.page=result.pager;
			        	        //数据的后续处理
			        	        this.dataCallback(result);
			        	    }
			        	    ,function(response) {//处理错误
			        	    	this.$http.error(response);
			        	    });
			         }
			         ,deleteByIds:function (event){//删除
			        	 //获取选中列表
			        	 var parameters=[];
			        	 var selectList=this.getSelectList();
			        	 if(selectList.length<=0){
			        	    dialog.alert("请选择要删除的数据");
			        	    return false;
			        	 }
			        	 var that=this;//保存this
			        	 dialog.confirm("选中"+selectList.length+"行数据,确定要删除吗?", function (result) {
			                 if (result) {//确定
			                	 for(i in selectList){
					        		 parameters.push(selectList[i].id);
					        	 }
			                	 that.$http.put([basePath,'deleteByIds'].join(""), parameters)
					        	  .then(function(response) {//正确响应,从this.list中移除数据
					        	      var result=response.data;
					        	      if(result.success){
					        	    	  var oldList=that.list;
					        	    	  var list=[];
					        	    	  for(i = 0,len=oldList.length; i < len; i++) {
					        	    		  if(!oldList[i].checked){
						        	    		  list.push(oldList[i]);
						        	    	  }
								          }
						        	      that.list=list;
					        	      }
					        	  }
					        	  ,function(response) {//处理错误
					        		  this.$http.error(response);
					        	  }
					             );//http
			                 }else{//取消
			               	   //alert(result+'->取消');
			                 }
			             });
			         }
			         ,edit:function (event){//编辑
			        	 var selectList=this.getSelectList();
			        	 if(selectList && selectList.length==1){
			        		var vo = selectList[0];
			        	    this.$router.push({ name: 'edit', params: vo});//切换到edit
			        	 }else{
			        		dialog.alert("请选择1行数据,当前选中"+selectList.length+"行");
			        		return false;
			        	 }
			         }
			         ,add:function (){
			        	 this.$router.push({ name: 'add'});//切换到add
			         }
			         ,pageChangeCallback:function (args){//分页组件回调函数
			        	 this.page.currentPage+=args.count;
			       		 this.listPage();
			         }
	 }//methods
}//defautList
//添加
var defautAdd = {
		       template: '#addTemplate'
		       ,data :function() {
			    	return { 
			         vo:{} 
			    	} 
	           }
	           ,methods: {
	        	    validate    :function()      { return true;/*可以覆盖本方法添加验证*/}
	               ,dataCallback:function(result){/*覆盖实现自定义回调*/}
	        	   ,save:function (event){//保存
	        		   var ok=this.validate();
	        		   if(!ok){
	        			   return false;
	        		   }
	        		   event.target.disabled=true;
		    		   this.$http.put([basePath,'add'].join(""), this.vo, {headers: {}})
				   	    .then(function(response) {//正确响应
						var result=response.data;
				   	    	this.dataCallback(result);
			        	    if(result.success){
						      this.$router.push({ name: 'list'});//返回到list
			        	    }				   	   
					    }
				   	    ,function(response) {//处理错误
				   	    	event.target.disabled=false;
				   	    	this.$http.error(response);
				   	    });
		    	   }
	               ,clear:function (){//清空
	            	   this.vo=jQuery.extend(true, {}, this.vo);
	               }
		       }
}//defautAdd
//修改
var defautEdit = {
		        template: '#addTemplate'
		       ,props: ['id'] //从路由中获取参数
		       ,data :function() {
			      return {
				       vo:{}
				      ,clearVo:{}
			      } 
	           }
		       ,mounted: function() {
		    	    //console.log(app.$route.params);//获取路由参数
			   	    //请求服务器数据
			   	    var parameters={id:app.$route.params.id};
			   	    this.$http.post([basePath,'getById'].join(""),parameters, {headers: {}})
			   	    .then(function(response) {//正确响应
			   	    	var data=response.data;
			   	    	if(data){
			   	    		this.vo=data;
			   	    		this.clearVo = jQuery.extend(true, {}, data);
			   	    	}
			   	    }
			   	    ,function(response) {//处理错误
			   	    	this.$http.error(response);
			   	    });
		       }//mounted
		       ,methods: {
		    	    validate    :function()      { return true;/*可以覆盖本方法添加验证*/}
                   ,dataCallback:function(result){/*覆盖实现自定义回调*/}
		    	   ,save:function (event){
		    		   var ok=this.validate();
	        		   if(!ok){
	        			   return false;
	        		   }
	        		   event.target.disabled=true;
		    		   this.$http.put([basePath,'update'].join(""), this.vo, {headers: {}})
				   	    .then(function(response) {//正确响应
				   	    	var result=response.data;
				   	    	this.dataCallback(result);
			        	    if(result.success){
				   	    	  this.$router.push({ name: 'list'});
			        	    }
				   	    }
				   	    ,function(response) {//处理错误
				   	    	event.target.disabled=false;
				   	    	this.$http.error(response);
				   	    });
		    	   }
			       ,clear:function (){
			    	   this.vo=jQuery.extend(true, {}, this.clearVo);
		           }
		       }
}//defautEdit	